package com.ffe.flower.engine.service;

import java.util.List;

import com.ffe.flower.engine.constant.AuditStatus;
import com.ffe.flower.engine.dto.FlowCriteriaQuery;
import com.ffe.flower.engine.model.FlowInfo;
import com.ffe.flower.engine.wrapper.FlowWrapper;

public interface IFlowInfoService {

  FlowInfo get(Integer flowId);

  FlowInfo add(FlowInfo info);

  FlowWrapper start(Object field, String processId, String applicantId, String targetId, Enum<?> curFlow,
      String promoterId, boolean promoterAgent);

  FlowWrapper transitToEnd(Object field, Integer flowId, Enum<?> toState, String auditorId, boolean auditorAgent,
      AuditStatus auditStatus, String remark, boolean throughout);

  FlowWrapper transit(Object field, Integer flowId, Enum<?> toState, String auditorId, boolean auditorAgent, String remark);

  List<FlowWrapper> query(FlowCriteriaQuery criteriaQuery);

  long count(FlowCriteriaQuery criteriaQuery);

}
